package com.cloudlead.common.lang.annotation;

import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * 标注需要隐藏的字段
 * 
 * <pre>
 * 	@HideProperty(showProperties="id",groups=Update.class)
 * public class UserVO {
 * 
 * 	private String id;
 * 
 * 	private String name;
 * 	
 * 	private String password;
 * </pre>
 * 
 * @author dean.lu
 */
@Target({ TYPE })
@Retention(RUNTIME)
@Documented
public @interface HideProperty {
	/**
	 * 需要显示的属性，其他属性都隐藏。如果showProperties和hideProperties都设置，而且互相有冲突的话，
	 * 以hideProperties的设置为准 。
	 * 
	 * @return
	 */
	String[] showProperties() default {};

	/**
	 * 需要隐藏的属性，其他属性都显示
	 * 
	 * @return
	 */
	String[] hideProperties() default {};

	Class<?>[] groups();

}
